package com.ys.日历;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 描述: 把字符串 转为 date 在转日历类
 *  1: Date parse(str)
 * @author CodeYang
 * @version 2020/12/22 17:05
 */
public class str转Date转Calendar {

    public static void main(String[] args) throws ParseException {
//        f1();
        f2(f1());



    }

    /**
     * 2020年 12月 17日 19时 45分 33秒
     * 返回为日期对象
     *    // str -> Date
     *         String str = "2019-12-01 13:20:40";
     *         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     *         Date date = sdf.parse(str);
     *         // Date -> Calendar
     *         Calendar calendar= Calendar.getInstance();
     *         calendar.setTime(date);
     *         calendar.add(Calendar.YEAR,-5);
     *         calendar.add(Calendar.MONTH,-5);
     *         // Calendar -> str
     *         String format = sdf.format(calendar.getTime());
     *         System.out.println(format);
     * @throws ParseException
     */
    private static void f2(String strTime) throws ParseException {
     // 1 str - > Date 通过 SimpleDateFormat 的 Date parse(str)
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        Date date = sdf.parse(strTime);
        // 创建日历对象
        Calendar calendar = Calendar.getInstance();
        // 2 Date -> Calendar setTime(Date) 进去
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH,5);;
        calendar.add(Calendar.HOUR_OF_DAY,5);
        // 3 在Calendar 转为str 同样通过SimpleDateFormat 的format(Date)
        //calendar.getTime() 返回 修改后的日历的 Date对象

        System.out.println("str -> calendar"+sdf.format(calendar.getTime()));


    }

    /**
     *
     * 需求：获得当前的Calendar对象，先在当前日期的基础之上减少5天，然后在当前的时间上加5个小时，
     * 最后把该Calendar对象保存的“年月日时分秒”转化为字符串，
     * 字符串格式为“2020年12月31日 13时14分00秒”
     */
    private static  String f1(){
        // 1获得当前时间,可以用日历对象 会获得系统的当前日期和时间
        Calendar calendar = Calendar.getInstance();
        // 当前日期基础上减少5天
        calendar.add(Calendar.DAY_OF_MONTH,-5);
        // 当前时间基础上减5个小时
        calendar.add(Calendar.HOUR_OF_DAY,-5);;
        //2 把 Calendar 转 Date对象
        Date date = calendar.getTime();
        //3 把 Date 转 格式化的str
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年 MM月 dd日 HH时 mm分 ss秒");
        String strTime = sdf.format(date);
        System.out.println("calenar->str"+strTime);
        return strTime;

    }

}
